package Principal;

import java.math.BigDecimal;
import java.util.List;

public class EventoGerenciaFilaChegada extends Evento{

	public EventoGerenciaFilaChegada(BigDecimal _tempoExecucao, Host _host, HistoriaSimulacao _historiaSimulacao, Estatistica _estatistica, List<Host> _hostsSistema) {
		super(_tempoExecucao, _host, _historiaSimulacao, _estatistica, _hostsSistema);		
	}

	@Override
	public void executar() {
		// Se o modo verbose estiver ativo imprimo o evento
		if(verbose){
			System.out.printf("Evento Gerencia Fila Chegada. Host: %d. Tempo: %s us.\n", getNumeroHost(), tempoExecucao.setScale(4, BigDecimal.ROUND_HALF_EVEN).toString());	
		}
		//para transmitir um dado imediatamente nao pode ter pacote  
		//na fila e pacote sendo transmitido por este host
		if (!host.isTransmitindo() && host.isFilaVazia()){
			// Nesse caso posso gerar um novo evento de inicio de transmissao
			Evento inicioTx = new EventoInicioTransmissao(tempoExecucao, host, historiaSimulacao, estatistica, hostsSistema);
			historiaSimulacao.adicionarEvento(inicioTx);
		}
		
		//adiciona os pacotes da mensagem a ser transmitida na fila
		host.adicionaMsgFila();
	}

}
